import axios from 'axios'


// 配置 axios 实例
const mockRequest = axios.create({
  // proxy 和 baseURL 执行的流程
  baseURL: 'http://www.test.com',
  timeout: 5000
})

// 添加请求拦截器
mockRequest.interceptors.request.use(
  (config) => {

    // 在发送请求之前做些什么
    return config
  },
  (error) => {
    // 对请求错误做些什么
    return Promise.reject(error)
  }
)

// 添加响应拦截器
mockRequest.interceptors.response.use(
  (response) => {

    // console.log(response.data)
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    return response.data.data
  },
  (error) => {
    // 什么时候会进入响应拦截器的 error
    // 第一种情况：请求超时
    // 第二种情况：如果 http 状态码如果不是以 2 开头

    // 当项目中存在错误，需要给用户进行提示
    // 提示有两种处理方式：
    // 第一种：让每个接口地址处理，哪个接口报错的，由对应的接口捕获错误进行处理
    // 以下这种方式就是将错误返回给接口，由接口自己处理异常
    // return Promise.reject(error)

    // 第二种：不管有什么错误，都会走 error 回调，然后在 error 中统一对错误进行提示
    alert(error.message)
    // 如果不想错误交给每个接口来处理
    // 直接返回一个 Promise 实例，这时候 Promise 处理等待状态
    // 如果处理等待状态，既不会返回成功状态，也不会返回失败状态
    return new Promise(() => {})
  }
)

export default mockRequest
